home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / os2 / adaptor.zip / ADAPT.ZIP / adaptor / examples / bsp2 / flow_add.f9 next >
Text File  |  1993-06-15  |  2KB  |  66 lines

  1.       program flow
  2.       implicit none
  3.  
  4. c     dimension of image: x_dim x y_dim
  5.  
  6.       integer x_dim, y_dim, points
  7.       parameter (x_dim = 128, y_dim = 128)
  8.       integer x_h, y_h
  9.       parameter (x_h = x_dim / 2, y_h = y_dim / 2)
  10.       parameter (points = 8192)
  11.       integer i, j
  12.       intrinsic sum
  13.  
  14.       real x_coord(points), y_coord(points), dx (points), dy (points)
  15.       integer image_buffer (x_dim, y_dim )
  16. cmf$  layout image_buffer (:host)
  17.       integer image (x_dim, y_dim)
  18.       integer x (points), y (points)
  19.       logical mask (points)
  20.       integer color (points)
  21.       integer dummy
  22.  
  23.       i = x_dim
  24.       j = y_dim
  25.       call x_display_init (x_dim,y_dim)
  26.  
  27.       x_coord = 0
  28.       y_coord = 0
  29.       do i = 1, points !parallel
  30.          x_coord(i)=sin(i*2*3.1415926*8/real(points))
  31.      $              *(real(i)/real(points))
  32.       end do
  33.       do i = 1,points !paralell
  34.          y_coord(i)=cos(i*2*3.1415926*8/real(points))
  35.      $              *(real(i)/real(points))
  36.       end do
  37.       x_coord = 0.5*x_coord
  38.       y_coord = 0.5*y_coord
  39.       do i = 1, 250
  40.         dx = x_coord + (i/25.0) * y_coord * x_coord
  41.         dy = - y_coord - (i/50.0) * x_coord * (y_coord-x_coord)
  42.         x_coord = x_coord + 0.01 * dx
  43.         y_coord = y_coord + 0.01 * dy
  44. c       display all points
  45.         image = 0
  46.         do j = 1, points   !parallel
  47.            x(j) = x_h + x_coord(j) * x_h
  48.            y(j) = y_h + y_coord(j) * y_h
  49.            mask (j) = ((x(j) .gt. 0) .and. (x(j) .le. x_dim) .and.
  50.      $                 (y(j) .gt. 0) .and. (y(j) .le. y_dim))
  51.            color (j) = 16
  52.         end do
  53. c
  54. c       global send with a mask and addition of values
  55. c
  56. c       scatter for a two dimensional structure with mask
  57. c
  58. c       send only if x, y coordinates are in range 
  59. c
  60.         call global_send (image, x, y, color, mask, sum)
  61.         image_buffer = image
  62.         call x_show_bild (image_buffer)
  63.       end do
  64.       read *, dummy
  65.       end 
  66.